package entity;

import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

@Entity
@Table
public class Anuncio {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private int id_anuncio;
    @Column
    private int codigo_externo;
    @Column
    private String titulo;
    @Column
    private String atividades;
    @Column
    private String requisitos;
    @Column
    private String observacoes;
    @Column
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_publicacao;
    @Column
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_validade;
    @Column
    private double carga_horaria;
    @Column
    private String setor;
    @Column
    private boolean efetivacao;
    @ManyToOne(targetEntity=Contato.class)
    @JoinColumn(name="id_contato")
    private Contato contato;
    @Column
    private float valor;
    @Column
    private String cidade;
    @Column
    private String bairro;
    @Column
    private String tipo_anuncio;
    @Column
    private int status;
    @Column
    private boolean agencia_integradora;
    @ManyToOne(targetEntity=Empresa.class)
    @JoinColumn(name="id_empresa")
    private Empresa empresa;
    @ManyToOne(targetEntity=Remuneracao.class)
    @JoinColumn(name="id_remuneracao")
    private Remuneracao remuneracao;    
    @ManyToMany
    @JoinTable(
            name = "beneficio_no_anuncio",
            joinColumns={@JoinColumn(name="id_anuncio")},
            inverseJoinColumns={@JoinColumn(name="id_beneficio")}
            )
    private List<Beneficio> beneficio;
    @ManyToMany
    @JoinTable(
            name = "anuncio_para_curso",
            joinColumns={@JoinColumn(name="id_anuncio")},
            inverseJoinColumns={@JoinColumn(name="id_curso")}
            )
    private List<Curso> curso;
    

    public String getAtividades() {
        return atividades;
    }

    public void setAtividades(String atividades) {
        this.atividades = atividades;
    }

    public List<Curso> getCurso() {
        return curso;
    }

    public void setCurso(List<Curso> curso) {
        this.curso = curso;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getObservacoes() {
        return observacoes;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public boolean isAgencia_integradora() {
        return agencia_integradora;
    }

    public void setAgencia_integradora(boolean agencia_integradora) {
        this.agencia_integradora = agencia_integradora;
    }

    public double getCarga_horaria() {
        return carga_horaria;
    }

    public void setCarga_horaria(double carga_horaria) {
        this.carga_horaria = carga_horaria;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }

    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    public String getRequesitos() {
        return requisitos;
    }

    public void setRequesitos(String requesitos) {
        this.requisitos = requesitos;
    }

    public List<Beneficio> getBeneficio() {
        return beneficio;
    }

    public void setBeneficio(List<Beneficio> beneficio) {
        this.beneficio = beneficio;
    }

    

    public void setCarga_horaria(int carga_horaria) {
        this.carga_horaria = carga_horaria;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public int getCodigo() {
        return codigo_externo;
    }

    public void setCodigo(int codigo) {
        this.codigo_externo = codigo;
    }

    public Contato getContato() {
        return contato;
    }

    public void setContato(Contato contato) {
        this.contato = contato;
    }


    public Date getData_publicacao() {
        return data_publicacao;
    }

    public void setData_publicacao(Date data_publicacao) {
        this.data_publicacao = data_publicacao;
    }

    public Date getData_validade() {
        return data_validade;
    }

    public void setData_validade(Date data_validade) {
        this.data_validade = data_validade;
    }

    public int getCodigo_externo() {
        return codigo_externo;
    }

    public void setCodigo_externo(int codigo_externo) {
        this.codigo_externo = codigo_externo;
    }

    public String getRequisitos() {
        return requisitos;
    }

    public void setRequisitos(String requisitos) {
        this.requisitos = requisitos;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    public boolean isEfetivacao() {
        return efetivacao;
    }

    public void setEfetivacao(boolean efetivacao) {
        this.efetivacao = efetivacao;
    }

    public int getId_anuncio() {
        return id_anuncio;
    }

    public void setId_anuncio(int id_anuncio) {
        this.id_anuncio = id_anuncio;
    }

    public Remuneracao getRemuneracao() {
        return remuneracao;
    }

    public void setRemuneracao(Remuneracao remuneracao) {
        this.remuneracao = remuneracao;
    }


    public String getSetor() {
        return setor;
    }

    public void setSetor(String setor) {
        this.setor = setor;
    }



    public String getTipo_anuncio() {
        return tipo_anuncio;
    }

    public void setTipo_anuncio(String tipo_anuncio) {
        this.tipo_anuncio = tipo_anuncio;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    

    

}